Environmental Data Tutorial
An R tutorial on how to manipulate and plot environmental data
Introduction
The purpose of this document is to provide a few examples of how to extract environmental data in R and/or manipulate and plot various types of environmental data.
Data
The data for this vignette comes from two sources:
- Downloaded from
EnvRtypeandgeosphereR packages.
- Manually collected data from various our lentil field trials in the AGILE project.
Prepare the data
# devtools::install_github("derekmichaelwright/agData")
library(agData)
# devtools::install_github('allogamous/EnvRtype')
library(EnvRtype)
# install.packages("geosphere")
library(geosphere)
#
myCaption <- "www.dblogr.com/ or derekmichaelwright.github.io/dblogr/ | Data: AGILE"
myEs <- c("Ro16", "Ro17", "Su16", "Su17", "Su18", "Us18",
"In16", "In17", "Ba16", "Ba17", "Ne16", "Ne17",
"Mo16", "Mo17", "Sp16", "Sp17", "It16", "It17")
myColors <- c("darkgreen", "darkred", "coral3", "deeppink3", "darkcyan",
"burlywood4", "darkslateblue", "darkmagenta", "darkgoldenrod3")
#
ee <- read.csv("AGILE_Expts.csv") %>%
mutate(Expt = factor(Expt, levels = myEs))
DT::datatable(ee)EnvRtype and geosphere R packages
# Prep data
d1 <- get_weather(env.id = ee$Expt, lat = ee$Lat, lon = ee$Lon,
start.day = ee$Start, end.day = ee$End) %>%
mutate(DayLength = daylength(lat = .$LAT, doy = .$YYYYMMDD))
#
write.csv(d1, "AGILE_R_EnvData.csv", row.names = F)
DT::datatable(d1)Manual Data
# Prep data from
d2 <- list() # Create Empty list
files <- list.files("AGILE_EnvData/")[grepl(".csv", list.files("AGILE_EnvData/"))]
for (i in 1:length(files)) {
d2[[i]] <- read.csv(paste0("AGILE_EnvData/", files[i]), stringsAsFactors = T)
#colnames(d2[[i]])[1] <- "Location"
}
# Bind files together
d2 <- do.call(rbind, d2)
# Filter data
d2 <- d2 %>% filter(!is.na(DaysAfterPlanting))
#
# Prep data for plotting
d2 <- d2 %>%
mutate(Value = as.numeric(Value)) %>%
filter(!is.na(Value)) %>%
mutate(Time = ifelse(is.na(Time) | Time == "",
"12:00:00", as.character(Time)),
Date = as.Date(Date),
DateTime = as.POSIXct(paste(Date, Time),
format = "%Y-%m-%d %H:%M:%OS"),
#Location = factor(Location, levels = locs),
LoggerID = factor(LoggerID, levels = unique(.$LoggerID)) )
#
write.csv(d2, "AGILE_My_EnvData.csv", row.names = F)
#
DT::datatable(d2)